#pragma once
#include "..\Common\Global.h"
#include "Parser_Input.h"
#include "Parser_Output.h"

class Parser_Type;
class Parser_Str;

class CParser_Input;
class CParser_Output;

class Parser_MemoryManager : public Combinator_MemoryManager<CParser_Input,CParser_Output>
{
public:
	~Parser_MemoryManager()
	{
		Destroy();
	}

	void AddType(Parser_Type* ptr)
	{
		TypeList.Add(ptr);
	}

	void AddStr(Parser_Str* ptr)
	{
		StrList.Add(ptr);
	}

	void AddString(LPTSTR ptr)
	{
		StringList.Add(ptr);
	}

	void AddOutput(CParser_Output* ptr)
	{
		OutputList.Add(ptr);
	}

	void Destroy();
protected:
	List<Parser_Type*> TypeList;
	List<Parser_Str*> StrList;
	List<LPTSTR> StringList;
	List<CParser_Output*> OutputList;
};

extern Parser_MemoryManager g_Parser_MemoryManager;